#ifndef TI3D_H
#define TI3D_H
#include <vector>
#include "common.h"
using namespace std;

typedef struct {
    int length, width, height, NR_cate;
    int *data;
} cate_map_3D;

typedef struct {
    int max_scale;
    int length, width, height, NR_cate;
    int *data;
    cate_map_3D *map_cate;        //only one grid is used
} train_grid_3D;

typedef struct {
    int max_scale;
    int *length, *width, *height; 
    int *hard_data;                // the hard data
    int NR_cate;                // number of categories
    target_grid_DATA *sample;
} target_grid_3D;

void init_sim_grid_3D(target_grid_3D * grid, int length, int width,
                      int height, int max_scale, int NR_cate, int N_sample, int *target);

int *zoom_in_3D(int *orig_cimg, int orig_xsize, int orig_ysize,
                int orig_zsize, int scale, int NR_cate);
void build_zoomed_images_3D(int maxscale, train_grid_3D * ti);
void read_image_3D(train_grid_3D * ti, char *file);
#endif                            /* ifndef TI3D_H */
